package chen.nf.converter;

import java.util.Iterator;
import java.util.ServiceLoader;

/**
 * @Author czl
 * @Date 2024-05-07
 * 转换工具类
 */
public class ConverterUtils {

    private static final ServiceLoader<Converter> loader = ServiceLoader.load(Converter.class);



    /**
     * 类型转换，将字符串转换成对应Class类型的值
     * @param param 字符串参数
     * @param type 需要转换的class类型
     * @return 转换后的值
     * @param <T>
     */
    public static <T> T converter(String param , Class<T> type){

        //获取迭代器
        Iterator<Converter> it = loader.iterator();
        Object value = null;
        while (it.hasNext()) {
            Converter converter = it.next();
            if(converter.supports(type)) {
                value = converter.converter(param);
                break;
            }
        }
        return (T)value;
    }
}
